namespace Microsoft.Robotics.Tracing
{
    using System;

    /// <summary>
    /// An instance of this class is a leaf node level tracer that does the actual leg work of tracing
    /// Instances of this class are injected into the dispatcher, and dispatcher delegates the actual tracing to those classes
    /// </summary>
    public interface ITraceWriter
    {
        /// <summary>
        /// Do the tracing
        /// </summary>
        /// <param name="dateTime">Date time</param>
        /// <param name="level">Trace level</param>
        /// <param name="context">Trace context</param>
        /// <param name="format">Input string format</param>
        /// <param name="args">Input arguments</param>
        void WriteLine(DateTime dateTime, TraceContext level, TraceContext context, string format, params object[] args);
    }
}
